<?php if(!defined('CALL')) exit('No direct script access allowed');

include_once('ctrl/page.class.php');
include_once('view/v_usercard.class.php');
include_once('view/v_menus.class.php');
include_once('models/m_user.class.php');
include_once('models/m_events.class.php');
include_once('models/m_user.class.php');

class PagePlans extends Page
{
	private $events = null;
	
	public function __construct($actor, $user)
	{
		parent::__construct($actor, $user);
		$this->page_name = "plans";
		$this->prepare();
	}
	
	private function prepare()
	{
		// mEvents::init();
		
		$share = (bool)(strtoupper($_SESSION["categ"]) == 'SHARE');
		$sub   = (bool)(strtoupper($_SESSION["categ"]) == 'WATCH');
		$own   = (bool)(strtoupper($_SESSION["categ"]) == 'OWN');
		
		// для неавторизованного пользователя нельзя запоминать город
		// if(is_null($actor->id) && isset($_SESSION["city_id"])) unset($_SESSION["city_id"]);
		
		$this->events = $this->actor->load_events(
			$_SESSION["date"],
			$_SESSION["city_id"],
			$this->user->id, $share, $sub, $own);
		
	}
	
	protected function prepare_msgbox()
	{
		// в стандартной ситуации диалог не показываем
		$this->msgbox_show = 0;
		
		// актор неавторизован, но попытка была?
		if(is_null($this->actor->id))
		{
			Logger::Write(__FILE__." ".__FUNCTION__." line: ".__LINE__, 'актор неавторизован');
			// были указаны email & password
			if(!empty($_POST['email']) && !empty($_POST['password']))
			{
				$this->msgbox_show = 1;
				
				Logger::Write(__FILE__." ".__FUNCTION__." line: ".__LINE__, 'есть пароль и email');
				// проверяем есть ли такой email
				$id = $this->actor->get_id($_POST['email'], null);
				// есть!
				if(!is_null($id))
				{
					Logger::Write(__FILE__." ".__FUNCTION__." line: ".__LINE__, 'пользователь с таким email есть в БД');
					// значит пароль неверный
					$this->msgbox_head = 'Ошибка авторизации!';
					$this->msgbox_text = 'Пользователь с таким адресом эл.почты найден, а вот пароль указан неверный.<br/>Проверьте не нажата ли CapsLock, а также язык ввода пароля';
				}
				// нет такого!
				else
				{
					try
					{
						// считаем это попыткой регистрации
						$candidat = new mCandidat();
						if($candidat->register(FALSE))
						{
							$this->msgbox_head = 'Все в порядке!';
							$this->msgbox_text = 'На адрес '.$_POST['email'].' отправлено письмо с инструкциями.';
						}
						else
						{
							$this->msgbox_head = 'Ошибка!';
							$this->msgbox_text = 'Адрес эл.почты '.$candidat->props['mail'].' уже занят.';
						}
					}
					catch(Exception $e)
					{
						Logger::Write(__FILE__." ".__FUNCTION__." line: ".__LINE__, $e->getMessage());
					}
				}
			}
			// указана только почта, т.е. забыли пароль,
			// нужно пустить пользователя через ссылку в письме
			elseif(!empty($_POST['email']) && empty($_POST['password']))
			{
				$this->msgbox_show = 1;
				
				$msg = vLetters::lost($_POST['email'], '{hash}');
				if(mUser::lost($_POST['email'], 'КогдаКак: забыт пароль', $msg))
				{
					$this->msgbox_head = 'Все в порядке!';
					$this->msgbox_text = 'Письмо на Ваш email отправлено - проверьте свою почту.';
				}
				else
				{
					$this->msgbox_head = 'Хм, проблема.';
					$this->msgbox_text = 'Такого адреса эл.почты не нашлось.';
				}
			}
		}
	}
	
	protected function gen_main()
	{
		return vPlans::build_eventLine($this->events, $this->actor->id);
	}

	protected function gen_side()
	{
		$html = '';
		
		if($this->user->id)
		{
			$menus = new vMenus();
			$html .= $menus->gen_search_form();
			if($this->user->id == $this->actor->id)
			{
				$html .= $menus->gen_plans_menu($this->actor, $this->user);
			}
			else
			{
				$card = new vUsercard();
				$html .= $card->generate($this->user, $this->actor, TRUE);
			}
			$html .= $menus->gen_calendar_holder();
		}
		else
		{
			$html .= vPlans::build_adv2reg();
			// $html .= '<strong>Совет:</strong><br/>Зарегистрируйтесь (прямо над советом) и Вы получите новые возможности.';
		}
		
		return $html;
	}

	protected function add_css()
	{
		return "";
	}

	protected function add_css_files()
	{
		return "";
	}

	protected function add_js()
	{
		
		return "";
	}

	protected function add_js_files()
	{
		return '<script type="text/javascript" src="'.ROOT_URL.'/js/EventProcessor.js"></script>';
	}
}
